package com.tensquareuser.user.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

//这 拦截用的 jwt 、用security 只是为了他个 加密

/**
 * 安全配置类
 */
//只用spring-boot-starter-security里面的 加盐加密， 权限 我们用的jwt，验证bc的简单查询
//加了上面这包 就得 配置这  让放开路径，boot security 默认的配置是拦截所有。

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter{
    //WebSecurityConfigurerAdapter 类里面很多空方法 用于 配置时实现

    //纯注解 基本意味着 是 springboot 开发。  别的ssm 太麻烦，架子、配置太多，就不是这套配置了
    //原则： 自己写的 类用注解，框架的类用 配置文件。。配置方法类、
    //web.xml 作为 之前 ssm 等等spring 项目的入口。 很难省去，其他的都好省去，springboot牛在它 弄没了

    //authorizeRequests 所有security全注解配置 实现的开始。  表示 下面 会说明需要的权限等等
    //需要的权限分部分：第一部分是拦截的路径，第二部分访问该路径需要的权限
    //antMatcher 表示拦截什么 路径，路径后面配 角色、权限  。 permitAll 任何权限都可以访问，就等于放行全部了
    // .anyRequest()任何的请求  authenticated()登录认证后才可访问
    // .and().csrf().disable() 固定写法 表示是csrf拦截失效。 csrf 是secrety认为 它内部以外的请求都是 攻击。
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .antMatchers("/**").permitAll()
                .anyRequest().authenticated()
                .and().csrf().disable();
    }
}
